package com.wxzz.elearing.user.service;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wxzz.elearing.user.dto.*;
import com.wxzz.elearing.user.entity.AdminUser;
import com.wxzz.elearing.user.entity.Enterprise;
import com.wxzz.elearing.user.entity.EnterpriseUpdateLog;
import com.wxzz.elearning.common.dto.FeignEnterpriseDto;
import com.wxzz.elearning.common.vo.JgPageVo;
import com.wxzz.elearning.common.vo.ReturnVO;

import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;

/**
 * <p>
 * 企业 服务类
 * </p>
 *
 * @author
 * @since 2021-04-01
 */
public interface IEnterpriseService extends IService<Enterprise> {

    /**
     * 总后台新增企业
     *
     * @return
     */
    ReturnVO<Long> saveEnterprise(Enterprise enterprise);

    /**
     * 修改企业
     *
     * @param enterprise
     * @return
     */
    ReturnVO updateEnterprise(JSONObject jsonObject, Enterprise enterprise);

    /**
     * 企业操作列表
     *
     * @param enterpriseUpdateLogDto
     * @return
     */
    ReturnVO<JgPageVo<List<EnterpriseUpdateLog>>> listEnterpriseUpdateLog(EnterpriseUpdateLogDto enterpriseUpdateLogDto);

    /**
     * 企业列表
     *
     * @param enterpriseDto
     * @return
     */
    ReturnVO<JgPageVo<List<Enterprise>>> listEnterprise(HttpServletResponse response, EnterpriseDto enterpriseDto);

    /**
     * 企业改绑院长
     *
     * @param enterpriseUpdateWxUserDto
     * @return
     */
    ReturnVO enterpriseUpdateWxUser(Long enterpriseId, EnterpriseUpdateWxUserDto enterpriseUpdateWxUserDto);

    /**
     * 查询企业详情
     *
     * @param enterpriseId
     * @return
     */
    ReturnVO<Enterprise> selectEnterpriseDetail(Long enterpriseId);

    /**
     * 根据微信用户id查询对应企业信息(远程调用)
     *
     * @param wxUserId
     * @return
     */
    ReturnVO<String> selectEnterpriseByWxUserId(Long wxUserId);

    /**
     * 根据微信用户id查询用户对应信息(远程调用)
     *
     * @param wxUserId
     * @return
     */
    ReturnVO<String> selectWxUserByWxUserId(Long wxUserId);

    /**
     * 根据企业id查询详情(远程调用)
     *
     * @param enterpriseId
     * @return
     */
    ReturnVO<String> selectEnterpriseById(Long enterpriseId);

    /***
     *
     * 根据企业id查询行业类目id
     * @param enterpriseId
     * @return
     */
    ReturnVO<Long> selectBusinessCategoryIdByEnterpriseId(Long enterpriseId);

    /**
     * 查询企业列表
     *
     * @return
     */
    ReturnVO<JgPageVo<List<JSONObject>>> enterList(AdminQueAnsEnterpriseDto adminQueAnsEnterpriseDto);

    /**
     * 查询所有的企业id
     *
     * @return
     */
    List<Long> selectAllEnterprise();

    /**
     * 根据企业id查询企业详情(远程调用)
     *
     * @param enterpriseId
     * @return
     */
    FeignEnterpriseDto selectEnterpriseDtoById(Long enterpriseId);

    /**
     * 企业解绑短信发送
     *
     * @param enterpriseId
     * @return
     */
    ReturnVO sendCode(Long enterpriseId);

    /**
     * 修改企业的星级(远程调用)
     *
     * @param enterpriseId
     * @return
     */
    void updateEnterpriseStart(Long enterpriseId, Integer star);

    /**
     * 查看你的企业是否禁用
     *
     * @param enterpriseId
     * @return
     */
    ReturnVO<Integer> isBanEnterprise(Long enterpriseId);
}
